package Arrays;

/**
 * 作者:hfj
 * 功能:66.加一
 * 日期: 2025/10/20 17:41
 */
public class PlusOne {
    public static void main(String[] args) {
        int[] digits = {9,9};
        System.out.println(plusOne(digits));
    }

    //整型会溢出
    public static int[] plusOne1(int[] digits) {
        int res = 0,l=1;
        for (int i = digits.length-1; i>=0 ;i--){
            res += digits[i] * l;
            l *= 10;
        }
        String len1 = "",len2 = "";
        len1 += res;
        res += 1;
        len2 += res;
        int[] results;
        if (len2.length() > len1.length()){
            results = new int[digits.length+1];
        }else {
            results = new int[digits.length];
            l /= 10;
        }
        for (int i = 0; i < digits.length; i++) {
            results[i] = res / l;
            res %= l;
            l /= 10;
        }
        return results;
    }

    public static int[] plusOne(int[] digits){
        //保证了int不会溢出
        for (int i = digits.length-1; i>=0 ;i--) {
            //判断不是9则直接相加返回，否则则把当前为9的位改成0并进1
            if (digits[i] != 9){
                digits[i]++;
                return digits;
            }
            digits[i] = 0;
        }
        //唯一情况是整个数组都是9的情况才需要把数组扩容
        int[] temp = new int[digits.length+1];
        temp[0] = 1;
        return temp;
    }
}
